home *** CD-ROM | disk | FTP | other *** search
- class MathUtil
- {
- function MathUtil()
- {
- }
- static function RandRange(min, max)
- {
- return min + Math.random() * (max - min);
- }
- static function RadiansToDegrees(radians)
- {
- return radians / 3.141592653589793 * 180;
- }
- static function DegreesToRadians(degrees)
- {
- return degrees / 180 * 3.141592653589793;
- }
- static function Clamp(x, min, max)
- {
- return Math.max(Math.min(x,max),min);
- }
- static function Wrap(x, min, max)
- {
- var _loc1_ = (x - min) % (max - min);
- return _loc1_ >= 0 ? min + _loc1_ : max + _loc1_;
- }
- static function Sign(x)
- {
- return x <= 0 ? (x >= 0 ? 0 : -1) : 1;
- }
- static function SignNoZero(x)
- {
- return x < 0 ? -1 : 1;
- }
- static function MaxAbs(x, y)
- {
- if(Math.abs(x) > Math.abs(y))
- {
- return x;
- }
- return y;
- }
- static function MinAbs(x, y)
- {
- if(Math.abs(x) < Math.abs(y))
- {
- return x;
- }
- return y;
- }
- static function GetNormalizedAngle(angle)
- {
- return MathUtil.Wrap(angle,-180,180);
- }
- static function AngleDelta(a1, a2)
- {
- return MathUtil.GetNormalizedAngle(a1 - a2);
- }
- static function Lerp(a, b, alpha)
- {
- return a + (b - a) * alpha;
- }
- static function AngleLerp(a, b, alpha)
- {
- return MathUtil.GetNormalizedAngle(a + MathUtil.AngleDelta(b,a) * alpha);
- }
- static function VectorLerp(a, b, alpha)
- {
- return a.GetAdd(b.GetSubtract(a).GetMultiplyScalar(alpha));
- }
- static function RGBtoHSV(r, g, b)
- {
- r /= 255;
- g /= 255;
- b /= 255;
- var _loc1_ = new Object();
- var _loc7_ = undefined;
- var _loc2_ = undefined;
- var _loc4_ = undefined;
- _loc7_ = Math.min(r,Math.min(g,b));
- _loc2_ = Math.max(r,Math.max(g,b));
- _loc1_.v = _loc2_;
- _loc4_ = _loc2_ - _loc7_;
- if(_loc2_ != 0)
- {
- _loc1_.s = _loc4_ / _loc2_;
- if(r == _loc2_)
- {
- _loc1_.h = (g - b) / _loc4_;
- }
- else if(g == _loc2_)
- {
- _loc1_.h = 2 + (b - r) / _loc4_;
- }
- else
- {
- _loc1_.h = 4 + (r - g) / _loc4_;
- }
- _loc1_.h *= 60;
- if(_loc1_.h < 0)
- {
- _loc1_.h += 360;
- }
- return _loc1_;
- }
- _loc1_.s = 0;
- _loc1_.h = undefined;
- return _loc1_;
- }
- static function HSVtoRGB(h, s, v)
- {
- h = MathUtil.Wrap(h,0,360);
- var _loc1_ = new Object();
- var _loc8_ = undefined;
- var _loc9_ = undefined;
- var _loc3_ = undefined;
- var _loc5_ = undefined;
- var _loc4_ = undefined;
- if(s == 0)
- {
- _loc1_.r = _loc1_.g = _loc1_.b = v * 255;
- return _loc1_;
- }
- h /= 60;
- _loc8_ = Math.floor(h);
- _loc9_ = h - _loc8_;
- _loc3_ = v * (1 - s);
- _loc5_ = v * (1 - s * _loc9_);
- _loc4_ = v * (1 - s * (1 - _loc9_));
- switch(_loc8_)
- {
- case 0:
- _loc1_.r = v;
- _loc1_.g = _loc4_;
- _loc1_.b = _loc3_;
- break;
- case 1:
- _loc1_.r = _loc5_;
- _loc1_.g = v;
- _loc1_.b = _loc3_;
- break;
- case 2:
- _loc1_.r = _loc3_;
- _loc1_.g = v;
- _loc1_.b = _loc4_;
- break;
- case 3:
- _loc1_.r = _loc3_;
- _loc1_.g = _loc5_;
- _loc1_.b = v;
- break;
- case 4:
- _loc1_.r = _loc4_;
- _loc1_.g = _loc3_;
- _loc1_.b = v;
- break;
- default:
- _loc1_.r = v;
- _loc1_.g = _loc3_;
- _loc1_.b = _loc5_;
- }
- _loc1_.r *= 255;
- _loc1_.g *= 255;
- _loc1_.b *= 255;
- return _loc1_;
- }
- }
-